package com.softeem.music_sys.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.softeem.music_sys.comm.Result;
import com.softeem.music_sys.entity.Admin;
import com.softeem.music_sys.mapper.AdminMapper;
import com.softeem.music_sys.service.AdminService;
import org.springframework.stereotype.Service;

import java.util.Objects;

@Service //注解当前类为被spring容器管理的组件（业务层组件：javabean）
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService {

    @Override
    public Result add(Admin admin) {
        //根据提供的账号名查询是否存在重复的管理员  select * from admin where username=?
        //创建查询条件包装器
        QueryWrapper<Admin> query = Wrappers.query(Admin.class);
        //eq:equals 相等     ne:not equals 不相等    gt:greater than 大于    lt:less than 小于
        query.eq("username",admin.getUsername());
        Admin a = getOne(query);
        if(a != null){
            //账号已存在
            return Result.fail("账号已存在");
        }
        //执行添加
        boolean flag = save(admin);
        //根据执行结果返回信息
        return flag ? Result.success().setMsg("添加成功").setData(admin) : Result.fail("添加失败");
    }

    /**
     * 管理员登录功能
     * @param username 用户名
     * @param password 密码
     * @return 登录结果，包含登录状态和管理员信息
     */
    @Override
    public Result login(String username, String password) {
        //根据提供的管理员账号查询管理员信息
        QueryWrapper<Admin> query = Wrappers.query(Admin.class);
        query.eq("username",username);
        //执行查询
        Admin admin = getOne(query);
        if(admin == null){
            //账号不存在
            return Result.fail("账号不存在");
        }
        if(!Objects.equals(password,admin.getPassword())){
            //密码错误
            return Result.fail("密码错误");
        }
        if(admin.getStatus() == 0){
            //账号已禁用
            return Result.fail("账号已禁用");
        }
        //将对象中密码清除，防止传递到前端造成密码泄露
        admin.setPassword(null);
        return Result.success().setMsg("登录成功").setData(admin);
    }

}
